import axios from 'axios'
import {ElMessage} from "element-plus";


/**
 * 创建 axios 实例对象
 * <p>
 *     配置请求的根路径，超时时间，请求头等参数
 * </p>
 */
//配置统一的请求根路径，超时时间，请求头等参数
const  $axios = axios.create({
    baseUrl:'',
    timeout:5000,
    headers:{
        'Content-Type':'application/json;charset=utf-8'
    }
})

//配置请求拦截器，对请求做一些预处理
//比如设置 token，请求头等参数
$axios.interceptors.request.use(
    config => {
    console.log('请求拦截参数：', config);
     return config
    },
    error=>{
        console.log('请求拦截错误：', error);
        return Promise.reject(error)
    }
 )

//配置相应拦截器
$axios.interceptors.response.use(
    response => {
        const {code, message} = response.data;
        console.log('响应拦截参数：', response);
        if (code === 200){
            return response.data
        }
        else if (code === 401){
            ElMessage.error('您没有操作权限！')
            return Promise.reject(response.data)
        }
        else if (code === 403){
            ElMessage.error('您尚未登录，请先登录！')
            return Promise.reject(response.data)
        }
        else  {
            ElMessage.error(response.message)
            return Promise.reject(response.data)
        }

    },
    error => {
        console.log('响应拦截错误：', error);
        if (error == 'Cancel'){
            return Promise.reject(error)
        }
        let {message} = error
        if (message == 'Network Error'){
            message = '网络连接异常！'
        }
        if (message?.includes('timeout')){
            message = '请求超时，请联系管理员！';
        }
        else if (message?.includes('Request failed with status code')) {
            message = '未知异常，请联系管理员！';
        }
        ElMessage.error(message);
        return Promise.reject(error);

    }
)

export default $axios